package com.wd.base.service;

/**
 * NA<BR>
 *
 * @author w4425
 * @version [V2.0.0, 2021/3/18]
 * @since V2.0.0
 */
class xxx {
    //面向接口

    /**
     * MediatorServiceFactory 是一个服务工厂也是一个接口类，作用是负责管理各业务方的 Service 主要功能是注册与获取 Service
     *
     * service
     * 在 module_mediator 业务 module 下 common，pad、pone 下分别创建ICommonService, IService(pad), IService(phone)。
     * ICommonService：公共服务。
     * IService(pad)：pad服务并继承CommonService。
     * IService(phone)：phone服务并继承CommonService。
     *
     * common
     * business
     * CommonServiceImpl impl ICommonService
     * CommonServiceImpl impl IService(pad)
     * CommonServiceImpl impl IService(phone)
     *
     * service 注册
     * MediatorServiceFactory.getInstance().put(ICommonService,new CommonServiceImpl())
     *
     *  #########
     *  #########
     *     ------>依赖 ------>
     * App                    api
     *     ---可依赖impl ---->
     *
     * 这样的设计，面临着一个关键的问题，那就是：app既然无法访问 impl 中的类，那么app中怎么获取到 impl 的实现对象呢？
     * 们实现方法为使用反射机制 + 工厂模式 来获取 impl 的实现。
     *
     * // 1. api 模块定义接口
     *
     * // 人脸登录的接口定义
     * class API {
     *     public void faceLogin();
     * }
     * // 2. api 中的静态工厂
     *
     * class APIFactory {
     *     public static API createAPIInstance() {
     *         // 通过反射机制使用类名来创建对象
     *         // 类名为 ApiImpl
     *
     *     }
     * }
     * // 3. impl 中的实现类
     *
     * class ApiImpl extends API{
     *     public void faceLogin() {
     *         // 实现具体的逻辑
     *     }
     * }
     * // 4. app 中的调用者
     *
     * // 获取工厂中的对象，来进行调用
     * API api = APIFactory.createAPIInstance();
     * api.faceLogin();
     *
     */

}
